

import java.io.*;


class BaytYazicisi extends Thread {


	byte[] bDizi = {
		65, 66, 67, 68, 68, 70
	};

	OutputStream yazici ;

	public BaytYazicisi(String isim, OutputStream yazici) {
		super(isim);
		this.yazici = yazici;
	}

	public void run() {
		try {

			BufferedOutputStream bow = new BufferedOutputStream(yazici);
			for (int i=0; i<bDizi.length; i++) {
				bow.write(bDizi[i]);
				System.out.println(currentThread().getName()+" - yazilan = "+bDizi[i]);
			}

			System.out.println(currentThread().getName()+" yazma islemi bitti");
			bow.close(); // dikkat

		} catch (IOException ioEx) {
			ioEx.printStackTrace();// hatayi detaylariyla ekrana yansit
		}
	}
}

class BaytOkuyucu extends Thread {

	InputStream okuyucu  ;

	public BaytOkuyucu(String isim, InputStream okuyucu) {
		super(isim);
		this.okuyucu = okuyucu ;
	}

	public void run() {

		try {

			BufferedInputStream bis = new BufferedInputStream(okuyucu);
			int okunan; 
			while ( (okunan=bis.read()) != -1) {
				System.out.println(currentThread().getName()+" - okunan = "+okunan);
			}

			System.out.println(currentThread().getName()+" okunma islemi bitti");
			bis.close(); // dikkat

		} catch (IOException ioEx) {
			ioEx.printStackTrace();// hatayi detaylariyla ekrana yansit
		}
	}
}


public class BaytBaglanti {

	public static void main(String[] args) throws IOException{ 

		
	    
		PipedOutputStream yazici = new PipedOutputStream();

		PipedInputStream okuyucu = new PipedInputStream(yazici);// dikkat

		BaytYazicisi by = new BaytYazicisi("BaytYazicisi", yazici);
		BaytOkuyucu bo  = new BaytOkuyucu("BaytOkuyucu", okuyucu);

		// is parcaciklari baslatiliyor
		by.start();
		bo.start();
		
		

	}
}
